1. Field
The embodiments herein relate to communication interfaces and, more particularly, communication interfaces related to Physical Region Page (PRP)/Scatter Gather List (SGL) fetching and processing in Solid State Drives implementing the Non-Volatile Memory Express (NVMe) Storage protocol.
2. Description of the Related Art
A Solid State Drive (SSD) is an Integrated Circuit (IC) based storage mechanism which can store data persistently. SSDs are capable of providing higher bandwidth and lower latency compared to hard drives. While SSD can offer great speed and performance, the traditional buses such as Peripheral Component Interface (PCI), Serial Advanced Technology Attachment (SATA), Serial Attached Small Computer System Interface (SAS) and so on that connect the SSD to other devices may have limitations in terms of speed and data transfer capacity. As a result, the actual capability of an SSD may go unused.
NVMe can act as a logical device interface to access SSDs using a PCI Express bus. NVMe was introduced, in part, to respond to speed and performance related issues which occur with SSDs. NVMe allows parallelism, thereby allowing efficient utilization of the SSD capability and host software, which may in turn improve overall performance.
NVMe protocol defines commands that utilize Physical Region Pages (PRP)/Scatter Gather Lists (SGL) to denote a data buffer location in host memory. The data buffer may be represented using single or multiple PRP/SGL entries similar to a linked list. Associated information for a command including PRP/SGL may be formed before the command is issued to the SSD for execution. The SSD, while executing the command, may fetch the associated PRP/SGL and perform data movement related to the command.
The NVMe protocol is described in the NVMe specification, such as version 1.2.1 of the NVMe specification available at www.nvmexpress.org.